From: Florian Müllner Date: Thu, 3 Feb 2011 18:25:59 +0000 (+0100) Subject: window-clone: Fix signal connections when the window is closed X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~9130 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=00df20c6184b6ebf912151607c7503f9bf60326e;p=gnome-shell.git window-clone: Fix signal connections when the window is closed Commit 91d8a32f25 let WindowClone forward the size-changed signal of the "real" window, disconnecting the signal handler when the clone is destroyed. In case the clone was destroyed due to the MetaWindowActor being closed, this results in a warning (gsignal.c:2392: instance `0x2a3fac0' has no handler with id `2955'). Handle the case where the original window is destroyed before its clone. --- diff --git a/js/ui/workspace.js b/js/ui/workspace.js index cf3feb5c9..ebb3f1e9f 100644 --- a/js/ui/workspace.js +++ b/js/ui/workspace.js @@ -107,6 +107,8 @@ WindowClone.prototype = { this._sizeChangedId = this.realWindow.connect('size-changed', Lang.bind(this, function() { this.emit('size-changed'); })); + this._realWindowDestroyId = this.realWindow.connect('destroy', + Lang.bind(this, this._disconnectRealWindowSignals)); this.actor.connect('button-release-event', Lang.bind(this, this._onButtonRelease)); @@ -160,10 +162,19 @@ WindowClone.prototype = { } }, - _onDestroy: function() { - this.realWindow.disconnect(this._sizeChangedId); + _disconnectRealWindowSignals: function() { + if (this._sizeChangedId > 0) + this.realWindow.disconnect(this._sizeChangedId); this._sizeChangedId = 0; + if (this._realWindowDestroyId > 0) + this.realWindow.disconnect(this._realWindowDestroyId); + this._realWindowDestroyId = 0; + }, + + _onDestroy: function() { + this._disconnectRealWindowSignals(); + this.metaWindow._delegate = null; this.actor._delegate = null; if (this._zoomLightbox)